import axios from 'axios';
import { useUserStore } from '@/store/user';

// 创建 axios 实例
const service = axios.create({
  // 使用Vite代理，通过/api前缀访问后端
  baseURL: '/api',
  timeout: 1500000 // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 直接从localStorage获取token，避免pinia状态可能不同步的问题
    const token = localStorage.getItem('token');
    if (token) {
      // 同时提供两种格式的token，让后端选择接受哪一种
      config.headers['Authorization'] = `Bearer ${token}`;
      config.headers['token'] = token;
    }
    console.log('发送请求:', config.url, '携带token:', !!token);
    return config;
  },
  error => {
    console.log(error); // for debug
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  response => {
    const res = response.data;
    return res;
  },
  error => {
    console.log('请求错误:', error); // for debug
    
    // 添加更详细的错误信息
    if (error.response) {
      console.log('错误状态码:', error.response.status);
      console.log('错误数据:', error.response.data);
      console.log('请求URL:', error.config.url);
    }
    
    // 处理401未授权错误
    if (error.response && error.response.status === 401) {
      console.log('检测到401未授权错误，可能是token无效或已过期');
      
      // 直接清除localStorage中的token和用户信息
      localStorage.removeItem('token');
      localStorage.removeItem('userInfo');
      
      // 使用window.location而不是router，确保完全刷新页面
      window.location.href = '/login';
    }
    
    return Promise.reject(error);
  }
);

export default service;